import { ref, onMounted, computed, reactive, watch } from "vue"
import { useRoute } from "vue-router"
import { useRouter } from "vue-router"
import * as util from "@/utils"
import * as em from "@/enums"
export default function (cfg = {}) {
    const currentRoute = useRoute()
    // console.log(`currentRoute 👉`, currentRoute)
    const router = useRouter()

    const a = reactive({
        当前url: "",
        是独立详情页否: false,
        页面类型: "",
        待切换页面类型: "看板",
    })

    const api路径 = computed(() => {
        let kk = currentRoute.meta.api路径
        return kk
    })

    const 详情页route名 = computed(() => {
        // 类型守卫，确保 currentRoute.name 是 string 类型
        if (typeof currentRoute.name === "string") {
            let kk = currentRoute.name.replace("/list", "/详情")
            return kk
        }
        // 如果不是 string 类型，可根据需求返回默认值或做其他处理
        return ""
    })

    function 跳转组件list页(组件: 组件) {
        let 路由name = `${组件.插件名}.${组件.名称}.list`
        router.push({ name: 路由name, query: {} })
        return true
    }

    watch(
        () => currentRoute,
        (newValue, oldValue) => {
            if (!currentRoute) {
                return "非url情况？"
            }

            let url = currentRoute.path
            const meta = currentRoute.meta
            let 页面类型 = meta.页面类型 as string
            a.当前url = url.replace(/^\/layout/, "")
            a.是独立详情页否 = a.当前url.includes("/detail")
            if (!页面类型) {
                if (a.当前url.includes("/detail")) {
                    页面类型 = em.页面类型.详情
                } else if (a.当前url.includes("/kanban")) {
                    页面类型 = em.页面类型.看板
                } else if (a.当前url.includes("/shezhi")) {
                    页面类型 = em.页面类型.看板
                } else if (util.含其中之一(a.当前url, ['/home', '/person'])) {
                    // console.log(`是看板 a.当前url👉`,a.当前url)
                    页面类型 = em.页面类型.常规
                } else {
                    页面类型 = em.页面类型.列表
                }
            }
            switch (页面类型) {
                case em.页面类型.详情:
                    a.待切换页面类型 = em.页面类型.列表
                    break;
                case em.页面类型.看板:
                    a.待切换页面类型 = em.页面类型.列表
                    break;
                case em.页面类型.列表:
                    a.待切换页面类型 = em.页面类型.看板
                    break;
                default:
                    break;
            }
            a.页面类型 = 页面类型

        },
        { immediate: true }
    )

    // const 插组件id = computed(() => {
    //   const currentRoute = useRoute();

    // })
    return {
        currentRoute,
        a,
        api路径,
        详情页route名,
        跳转组件list页,
        // 当前url
    }
}
